package com.ruoyi.admin.service.document;

import com.ruoyi.admin.domain.LlmDocuments;

import java.util.List;
import java.util.Map;

/**
 * 服务类
 *
 * @author author
 * @since 2025-01-17
 */
public interface ILlmDocumentsService {


    /**
     * 解析文件
     *
     * @param fileId 文件id
     * @param parse  解析方式
     * @return
     */
    Map<String, Object> parseText(String fileId, String parse) throws Exception;


    /**
     * 处理文本 （异步处理）
     *
     * @param textId             文本id
     * @param businessDataString 元数据
     * @param treeId             所在树节点id
     * @param summer             摘要
     * @param tag                标签
     * @param knowledgeName      知识名称
     * @param datasetCode        知识库code
     * @param titleRow           表格头部
     * @param catalogue          目录
     * @return 结果
     */
    boolean processText(String textId,
                        String businessDataString,
                        String treeId,
                        String summer,
                        String tag,
                        String knowledgeName,
                        String datasetCode,
                        int titleRow,
                        String catalogue);

    /**
     * 开始运行队列里面任务
     *
     * @throws InterruptedException 线程异常
     */
    void startProcessorQueue() throws InterruptedException;

    /**
     * 删除文档（真实删除）
     *
     * @param collectionName 集合名称
     * @param documentId     文档ID
     * @return 是否成功
     */
    boolean deleteDocumentsReal(String collectionName, String partitionName, String documentId);


    /**
     * 批量删除文档
     *
     * @param collectionName 集合名称
     * @param partitionName  分区名称
     * @param documentIds    文档ids
     * @return
     */
    boolean batchDeleteDocumentsReal(String collectionName, String partitionName, List<String> documentIds);

    /**
     * 获取分页记录
     *
     * @return 文档记录
     */

    List<LlmDocuments> getList(String folderId, String keyword);

    /**
     * 获取文档处理状态
     *
     * @param ids 文档id
     * @return
     */
    List<Map<String, Object>> getDocumentStatus(List<String> ids);


    /**
     * 获取文档详细信息
     *
     * @param documentId 文档id
     * @return 文档对象
     */
    LlmDocuments getDocumentById(String documentId);


    /**
     * 修改文档启用状态
     *
     * @param documentId 文档id
     * @param enable     是否启用
     * @return boolean
     */
    boolean editEnable(String documentId, String enable);


    /**
     * 修改摘要等基础信息
     *
     * @param documents 文档信息
     * @return boolean
     */
    public boolean editInfo(LlmDocuments documents);

    /**
     * 修改原文后的重新切片
     *
     * @return boolean
     */
    public boolean editDocument(LlmDocuments documents);
}
